package cn.wolfcode.trip.base.service;

import cn.wolfcode.trip.base.domain.Travel;
import cn.wolfcode.trip.base.domain.TravelContent;
import cn.wolfcode.trip.base.query.QueryObject;
import cn.wolfcode.trip.base.query.TravelQueryObject;
import cn.wolfcode.trip.base.query.UserQueryObject;
import com.github.pagehelper.PageInfo;

import java.util.List;

public interface ITravelService {

    /**
     * 页面查询
     * @param qo
     * @return
     */
    PageInfo queryTravel(QueryObject qo);

    /**
     * 新增和更新
     * @param travel
     */
    void saveOrUpdate(Travel travel);

    /**
     * 查询一篇游记
     * @param id
     * @return
     */
    Travel selectById(Long id);

    /**
     * 查询所有游记
     * @param qo
     * @return
     */
    PageInfo<Travel> query(TravelQueryObject qo);

    /**
     * 修改游记状态
     * @param travel
     */
    void changeState(Travel travel);

    /**
     * 通过用户的id查询游记内容
     * @param id 游记的id
     * @return
     */
    TravelContent selectContentById(Long id);

    /**
     * 根据关键字查询对应的游记条数
     * @param qo
     * @return
     */
    int selectCountByKeyword(TravelQueryObject qo);

    /**
     * 通过用户的id查询攻略内容
     * @param qo
     * @return
     */
    PageInfo selectTravelById(UserQueryObject qo);

    void updateVisitNum(int userId, int num);

    void updateWatchNum(int userId, int num);
}
